
/**
 * 工具函数封装
 */
export default {
  formateDate(date: any, rule?: any) {
    let fmt = rule || 'yyyy-MM-dd hh:mm:ss'
    if (/(y+)/.test(fmt)) {
      fmt = fmt.replace(RegExp.$1, date.getFullYear())
    }
    const o: any = {
      // 'y+': date.getFullYear(),
      'M+': date.getMonth() + 1,
      'd+': date.getDate(),
      'h+': date.getHours(),
      'm+': date.getMinutes(),
      's+': date.getSeconds()
    }
    for (let k in o) {
      if (new RegExp(`(${k})`).test(fmt)) {
        const val = o[k] + '';
        fmt = fmt.replace(RegExp.$1, RegExp.$1.length == 1 ? val : ('00' + val).substr(val.length));
      }
    }
    return fmt;
  },
  // generatorRoutes(menuList: any) {
  //     let routes: any = [];
  //     const deepList = (list: any) => {
  //         while (list.length) {
  //             let item = list.pop()
  //             if (item.action) {
  //                 routes.push({
  //                     name: item.component,
  //                     path: item.path,
  //                     meta: {
  //                         title: item.menuName
  //                     },
  //                     component: item.component
  //                 })
  //             } else {
  //                 if (item.children && !item.action) {
  //                     deepList(item.children)
  //                 }
  //             }
  //         }
  //     }
  //     deepList(menuList)
  //     return routes;
  // }


  generatorRoutes(menuList: any) {
    let routes: any = [];
    // 使用Set来跟踪已使用的路由名称，确保唯一性
    const usedNames = new Set();
    const generateUniqueName = (baseName: any) => {
      let uniqueName = baseName;
      let counter = 1;

      while (usedNames.has(uniqueName)) {
        uniqueName = `${baseName}_${counter}`;
        counter++;
      }
      usedNames.add(uniqueName);
      return uniqueName;
    };
    const deep = (arr: any) => {
      for (let item of arr) {
        // 跳过没有组件或路径的菜单项（通常是操作项）
        if (!item.component || !item.path || item.path === '//' || item.path === '') {
          // 递归处理子菜单
          if (item.children && item.children.length > 0) {
            deep(item.children);
          }
          continue;
        }
        // 生成唯一的路由名称
        const routeName = generateUniqueName(item.component);
        if (item.children && item.children.length > 0) {
          // 有子菜单的情况
          let route = {
            name: routeName,
            path: item.path,
            meta: { title: item.menuName },
            component: () => import(`../views/${item.component}.vue`),
            children: []
          };
          // 递归处理子菜单
          deep(item.children);
          routes.push(route);
        } else {
          // 没有子菜单的情况
          routes.push({
            name: routeName,
            path: item.path,
            meta: { title: item.menuName },
            component: () => import(`../views/${item.component}.vue`)
          });
        }
      }
    };
    // 使用深拷贝避免修改原始数据
    deep(JSON.parse(JSON.stringify(menuList)));
    return routes;
  }
}